package com.roger.springcloudGreenwich.jwt;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by admin on 2020/4/1.
 */
public class SpringJwt {
    public void generateJwt(){
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("alg", "HS256");
        map.put("typ", "JWT");
        //
        Algorithm algorithm = Algorithm.HMAC256("secret");
        //
        Date now = new Date();
        Date expireTime = new Date(now.getTime() + 1000 * 60 * 30);
        String token = JWT.create()
                .withHeader(map)// 设置头部信息 Header
                .withIssuer("SERVICE")//设置 载荷 签名是有谁生成 例如 服务器
                .withSubject("this is test token")//设置 载荷 签名的主题
                // .withNotBefore(new Date())//设置 载荷 定义在什么时间之前，该jwt都是不可用的.
                .withAudience("APP")//设置 载荷 签名的观众 也可以理解谁接受签名的
                .withIssuedAt(now) //设置 载荷 生成签名的时间
                .withExpiresAt(expireTime)//设置 载荷 签名过期的时间
                .sign(algorithm);//签名 Signature
    }
}
